#ifndef MODULEMANAGER_H
#define MODULEMANAGER_H

#include <QPushButton>
#include <QVector>
#include <QLibrary>
#include <QSettings>
#include <QStackedWidget>
#include <QCoreApplication>

#include "modulebutton.h"
#include "declare.h"
#include "frameinterface.h"
#include "modulesinterface.h"
#include "interfaceclass.h"

#define cout qDebug() << "[" << __FILE__ << ":" << __LINE__ << "]"

/*
 * @file modulesmanager.h
 * @brief 模块管理类
 * ＠date xxxx.xx.xx
 */

typedef void (*Destory)();
typedef QWidget* (*CreateFunc)(QWidget*);

struct ModuleElem {
    QWidget* widget;
    QPushButton* topbtn;
    ModuleBtn* mobtn;
    QLibrary* lib;
};

using VME = QVector<ModuleElem*>;

class ModulesManager {

public:
    ModulesManager();
    ~ModulesManager();
    VME LoadModule();           // 加载模块
    VME AddModules();           // 增加模块
    VME DelModule(const int&);  // 删除模块

private:
    QString m_pathFile;         // ini文件路径
    QSettings* m_configure;     // 读写QSettings指针
    QVector<QString> m_vpath;   // 路径集合
    VME m_vme;                  // 结果集
};

#endif // MODULEMANAGER_H
